df <- as.data.frame(read.table('./acea-water-prediction/Aquifer_Petrignano.csv', header = TRUE, sep=','))
head(df, n=20)
## п.їDate Rainfall_Bastia_Umbra Depth_to_Groundwater_P24
## 1 14/03/2006 NA -22.48
## 2 15/03/2006 NA -22.38
## 3 16/03/2006 NA -22.25
## 4 17/03/2006 NA -22.38
## 5 18/03/2006 NA -22.60
## 6 19/03/2006 NA -22.35
## 7 20/03/2006 NA -22.50
## 8 21/03/2006 NA -22.31
## 9 22/03/2006 NA -22.31
## 10 23/03/2006 NA -22.40
## 11 24/03/2006 NA -22.32
## 12 25/03/2006 NA -22.25
## 13 26/03/2006 NA -22.15
## 14 27/03/2006 NA -22.47
## 15 28/03/2006 NA -22.27
## 16 29/03/2006 NA -22.52
## 17 30/03/2006 NA -22.50
## 18 31/03/2006 NA -22.70
## 19 01/04/2006 NA -22.77
## 20 02/04/2006 NA -22.49
## Depth_to_Groundwater_P25 Temperature_Bastia_Umbra Temperature_Petrignano
## 1 -22.18 NA NA
## 2 -22.14 NA NA
## 3 -22.04 NA NA
## 4 -22.04 NA NA
## 5 -22.04 NA NA
## 6 -21.95 NA NA
## 7 -21.99 NA NA
## 8 -21.89 NA NA
## 9 -21.82 NA NA
## 10 -21.89 NA NA
## 11 -21.89 NA NA
## 12 -21.82 NA NA
## 13 -21.79 NA NA
## 14 -21.83 NA NA
## 15 -21.75 NA NA
## 16 -21.81 NA NA
## 17 -21.84 NA NA
## 18 -21.87 NA NA
## 19 -21.90 NA NA
## 20 -21.83 NA NA
## Volume_C10_Petrignano Hydrometry_Fiume_Chiascio_Petrignano
## 1 NA NA
## 2 NA NA
## 3 NA NA
## 4 NA NA
## 5 NA NA
## 6 NA NA
## 7 NA NA
## 8 NA NA
## 9 NA NA
## 10 NA NA
## 11 NA NA
## 12 NA NA
## 13 NA NA
## 14 NA NA
## 15 NA NA
## 16 NA NA
## 17 NA NA
## 18 NA NA
## 19 NA NA
## 20 NA NA
Remove NA elements from data
df <- df[complete.cases(df$Rainfall_Bastia_Umbra),]
rownames(df) <- 1:nrow(df)
head(df, n=20)
## п.їDate Rainfall_Bastia_Umbra Depth_to_Groundwater_P24
## 1 01/01/2009 0.0 -31.96
## 2 02/01/2009 0.0 -32.03
## 3 03/01/2009 0.0 -31.97
## 4 04/01/2009 0.0 -31.91
## 5 05/01/2009 0.0 -31.94
## 6 06/01/2009 0.0 -31.89
## 7 07/01/2009 0.0 -31.91
## 8 08/01/2009 0.0 -31.83
## 9 09/01/2009 0.9 -31.80
## 10 10/01/2009 0.0 -31.76
## 11 11/01/2009 0.0 -31.70
## 12 12/01/2009 0.0 -31.57
## 13 13/01/2009 1.1 -31.54
## 14 14/01/2009 0.0 -31.44
## 15 15/01/2009 0.0 -31.26
## 16 16/01/2009 0.0 -31.50
## 17 17/01/2009 0.0 -31.61
## 18 18/01/2009 0.1 -31.15
## 19 19/01/2009 0.1 -30.95
## 20 20/01/2009 0.0 -30.93
## Depth_to_Groundwater_P25 Temperature_Bastia_Umbra Temperature_Petrignano
## 1 -31.14 5.2 4.9
## 2 -31.11 2.3 2.5
## 3 -31.07 4.4 3.9
## 4 -31.05 0.8 0.8
## 5 -31.01 -1.9 -2.1
## 6 -31.00 -0.7 -0.7
## 7 -30.96 1.5 -0.3
## 8 -30.94 4.3 6.6
## 9 -30.93 4.9 4.8
## 10 -30.87 1.9 4.2
## 11 -30.83 3.4 4.5
## 12 -30.74 3.3 3.9
## 13 -30.63 6.0 6.3
## 14 -30.55 8.2 8.1
## 15 -30.57 7.8 7.1
## 16 -30.61 5.1 5.3
## 17 -30.68 1.6 1.6
## 18 -30.41 6.4 6.4
## 19 -30.28 10.3 10.3
## 20 -30.21 12.1 12.0
## Volume_C10_Petrignano Hydrometry_Fiume_Chiascio_Petrignano
## 1 -24530.69 2.4
## 2 -28785.89 2.5
## 3 -25766.21 2.4
## 4 -27919.30 2.4
## 5 -29854.66 2.3
## 6 -29124.58 2.3
## 7 -31173.12 2.3
## 8 -30232.22 2.4
## 9 -30597.70 2.3
## 10 -31337.28 2.3
## 11 -29845.15 2.3
## 12 -28745.28 2.3
## 13 -28932.77 2.3
## 14 -28600.13 2.3
## 15 -24973.06 2.3
## 16 -31388.26 2.3
## 17 -30941.57 2.3
## 18 -23043.74 2.3
## 19 -21658.75 2.3
## 20 -23793.70 2.3
df <- subset(df, select = -c(Depth_to_Groundwater_P25, Temperature_Petrignano ))
colnames(df) <- c("Date", "Rainfall", "Depth_to_Groundwater","Temperature", " Volume", " Hydrometry" )
head(df, n=20)
## Date Rainfall Depth_to_Groundwater Temperature Volume Hydrometry
## 1 01/01/2009 0.0 -31.96 5.2 -24530.69 2.4
## 2 02/01/2009 0.0 -32.03 2.3 -28785.89 2.5
## 3 03/01/2009 0.0 -31.97 4.4 -25766.21 2.4
## 4 04/01/2009 0.0 -31.91 0.8 -27919.30 2.4
## 5 05/01/2009 0.0 -31.94 -1.9 -29854.66 2.3
## 6 06/01/2009 0.0 -31.89 -0.7 -29124.58 2.3
## 7 07/01/2009 0.0 -31.91 1.5 -31173.12 2.3
## 8 08/01/2009 0.0 -31.83 4.3 -30232.22 2.4
## 9 09/01/2009 0.9 -31.80 4.9 -30597.70 2.3
## 10 10/01/2009 0.0 -31.76 1.9 -31337.28 2.3
## 11 11/01/2009 0.0 -31.70 3.4 -29845.15 2.3
## 12 12/01/2009 0.0 -31.57 3.3 -28745.28 2.3
## 13 13/01/2009 1.1 -31.54 6.0 -28932.77 2.3
## 14 14/01/2009 0.0 -31.44 8.2 -28600.13 2.3
## 15 15/01/2009 0.0 -31.26 7.8 -24973.06 2.3
## 16 16/01/2009 0.0 -31.50 5.1 -31388.26 2.3
## 17 17/01/2009 0.0 -31.61 1.6 -30941.57 2.3
## 18 18/01/2009 0.1 -31.15 6.4 -23043.74 2.3
## 19 19/01/2009 0.1 -30.95 10.3 -21658.75 2.3
## 20 20/01/2009 0.0 -30.93 12.1 -23793.70 2.3
Plot data
library('ggplot2')
library('forecast')
library('zoo')
library('dplyr')
library('data.table')
library('imputeTS')
library('xts')
library('tseries')
library('stats')
library('nlme')
library('fpp')
library('lubridate')
library('TSstudio')
# sort by date
df$Date <- as.Date(df$Date, format= "%d/%m/%Y")
df <- df[order(df$Date), ]
interval = df$Date - shift(df$Date, n=1, fill=NA, type="lag")
for(i in interval)
{
if(isTRUE(i > 1) || is.null(i))
{
print(i)
}
}
depth <- na_interpolation(df$Depth_to_Groundwater, option = "linear")
depth_ts <- ts(depth, start = df$Date[1], frequency=12)
depth_ts <- diff(depth_ts)
ts_seasonal(depth_ts, type = "all")
## Warning: `arrange_()` is deprecated as of dplyr 0.7.0.
## Please use `arrange()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
ts_plot(depth_ts)
we can make some decisions from the seasonalty.
As we can see the minimum value of the depth is in November,December.
rainfall <- na_interpolation(df$Rainfall, option = "linear")
rainfall_ts <- ts(rainfall, start = df$Date[1], frequency=12)
rainfall_ts <- diff(rainfall_ts)
ts_seasonal(rainfall_ts, type = "all")
temperature <- na_interpolation(df$Temperature, option = "linear")
temperature_ts <- ts(temperature, start = df$Date[1], frequency=12)
temperature_ts <- diff(temperature_ts)
ts_seasonal(temperature_ts, type = "all")
From the plot we can see that the maximum temperature was in August, minimum in December
volume <- na_interpolation(df$` Volume`, option = "linear")
volume_ts <- ts(volume, start = df$Date[1], frequency=12)
volume_ts <- diff(volume_ts)
ts_seasonal(volume_ts, type = "all")
Maximum volume was in March, minimum in December
hydrometry <- na_interpolation(df$` Hydrometry`, option = "linear")
hydrometry_ts <- ts(hydrometry, start = df$Date[1], frequency=12)
hydrometry_ts <- diff(hydrometry_ts)
ts_seasonal(hydrometry_ts, type = "all")
Maximum in August, minimum in January.
The volume and hydrometry reached their minimum around the same time